package com.luxsoft.siipap.migracion;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.JdbcTemplate;






/**
 * Controlador central de tareas y procesos de migracion
 * Asume que los porcesos de este Facade solo se ejecutan
 * en la fase de implementacio o para alguna tarea de recarga
 * de informacion. La parametrizacion de base de datos
 * es fija y esta definida en los archivos:
 * 
 * 		migracion-ctx.xml
 *  	migracion-jdbc-properties
 *  
 *  que se encuentran en el directorio de esta clase
 * 
 * @author Ruben Cancino
 *
 */
public class MigrationManager extends MigrationSupport{
	
	private ApplicationContext applicationContext;
	
	private static MigrationManager INSTANCE;
	
	private MigrationManager(){
		init();
	}
	
	public static MigrationManager instance(){
		if(INSTANCE==null){
			INSTANCE=new MigrationManager();
			
		}
		return INSTANCE;
	}
	
	private void init(){
		applicationContext=new ClassPathXmlApplicationContext(
				"migracion-ctx.xml"
				,getClass()
				);
		setSourceJdbcTemplate((JdbcTemplate)applicationContext.getBean("sourceJdbcTemplate"));
		setTargetJdbcTemplate((JdbcTemplate)applicationContext.getBean("targetJdbcTemplate"));
	}
	
	public Object getBean(String id){
		return applicationContext.getBean(id);
	}
	
	
	/**
	 * @deprecated LAS LINEAS YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarLineas(){
		//ImportadorGeneral imp=(ImportadorGeneral)instance().getBean("importadorDeLineas");
		//imp.execute();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarClases(){
		//ImportadorGeneral imp=(ImportadorGeneral)instance().getBean("importadorDeClases");
		//imp.execute();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarMaracas(){
		//ImportadorGeneral imp=(ImportadorGeneral)instance().getBean("importadorDeMarcas");
		//imp.execute();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarUnidades(){
		ImportadorGeneral imp=(ImportadorGeneral)instance().getBean("importadorDeUnidades");
		imp.execute();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarProductos(){
		ImportadorGeneral imp=(ImportadorGeneral)instance().getBean("importadorDeProductos");
		imp.execute();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarProducto(String clave){
		ImportadorDeProductos imp=(ImportadorDeProductos)instance().getBean("importadorDeProductos");
		imp.importar(clave);
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void importarProductoFaltantes(){
		ImportadorDeProductos imp=(ImportadorDeProductos)instance().getBean("importadorDeProductos");
		imp.importarFaltantes();
	}
	
	/**
	 * @deprecated ESTA ENTIDAD YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void actualizarProducto(){
		ImportadorDeProductos imp=(ImportadorDeProductos)instance().getBean("importadorDeProductos");
		imp.actualizar();
	}
	
	/**
	 * Importa los proveedores de Siipapwin - Oracle
	 */
	public static void actualizarProveedores(){
		ImportadorDeProveedores imp=(ImportadorDeProveedores)instance().getBean("importadorDeProveedores");
		imp.actualizar();
	}
	
	/**
	 * @deprecated LOS CATALOGOS YA HAN SIDO IMPORTADAS Y ESTAN EN PRODUCCION, 
	 * 			   USAR RESPALDO DE CATALOGOS O TAREA DE ANT PARA IMPORTAR CATALOGOS
	 */
	public static void imporatrCatalogos(){
		//importarLineas();
		//importarClases();
		//importarMaracas();
		//importarUnidades();
	}
	
	
	public static void main(String[] args) {
		//imporatrCatalogos();
		//importarProductos();
		//importarProducto("REPLICA02");
		//importarProductoFaltantes();
		//actualizarProducto();
		//DBUtils.whereWeAre();
		actualizarProveedores();
	}

}
